Many data processing operations include a communication component, where two (or more) systems interact to exchange data and control information. In some environments, these interactions can be anonymous: neither party knows anything about the other, beyond the other's network address (which is generally necessary for any communication to occur). An example of such anonymous interaction is the retrieval of an ordinary Web page: the client (browser) establishes a data connection to a server and requests a document, and the server returns it. (It is appreciated that the Hypertext Transfer Protocol, “HTTP,” includes optional parameters and mechanisms by which a server can demand, and a client can provide, information about its identity.)
A variety of network protocols have been developed to serve in applications where the communicating parties need information from, or assurances about, each other. Some protocols are extremely flexible, providing options for each party to request, supply, or decline arbitrary categories of information, while others define simple, straightforward lock-step interactions that can be implemented even by devices with very little computational capacity. However, applications occasionally arise where existing protocols do not permit the establishment and conduct of communications with a desired combination of features. In these applications, a customized protocol may be useful.